/*
 * acm1709.c
 *
 *  Created on: 10 Apr 2010
 *      Author: xuxu
 */

#include<stdio.h>
#include<string.h>

int n, m;
char map[101][101];
int mark[101][101];

int order[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1};

void find(int x,int y)
{
	mark[x][y]=1;
	int i,tx,ty;
	for(i=0;i<8;i++)
	{
		tx=x+order[i][0];
		ty=y+order[i][1];
		if(tx>=n||ty>=m||tx<0||ty<0)
			continue;
		if(map[tx][ty]=='@'&&!mark[tx][ty])
		{
			find(tx,ty);
		}
	}
}

int main()
{
	int i, j;
	int con;
	char tmp;
	while (scanf("%d%d", &n, &m) && n != 0 && m != 0)
	{
		scanf("%c",&tmp);
		for (i = 0; i < n; i++)
		{
			for (j = 0; j < m; j++)
			{
				scanf("%c", &map[i][j]);
			}
			scanf("%c",&tmp);
		}
		con = 0;
		memset(mark,0,sizeof(mark));
		for (i = 0; i < n; i++)
		{
			for (j = 0; j < m; j++)
			{
				if(!mark[i][j]&&map[i][j]=='@')
				{
					find(i,j);
					con++;
				}
			}
		}
		printf("%d\n",con);
	}
	return 0;
}
